gtk: Add a separate ::touch-event signal
authorMatthias Clasen <mclasen@redhat.com>
Fri, 24 Feb 2012 15:19:59 +0000 (10:19 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 1 Mar 2012 21:25:20 +0000 (16:25 -0500)
gtk/gtkwidget.c
gtk/gtkwidget.h

index ff483125fedb2bb93823a6106689e73063334e27..1330a4512369d6a1c22058c46de54a84ece575a4 100644 (file)
@@ -482,6 +482,7 @@ enum {
   QUERY_TOOLTIP,
   DRAG_FAILED,
   STYLE_UPDATED,
+  TOUCH_EVENT,
   LAST_SIGNAL
 };
 
@@ -1886,6 +1887,15 @@ gtk_widget_class_init (GtkWidgetClass *klass)
                  G_TYPE_BOOLEAN, 1,
                  GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
 
+  widget_signals[TOUCH_EVENT] =
+    g_signal_new (I_("touch-event"),
+                  G_TYPE_FROM_CLASS (klass),
+                  G_SIGNAL_RUN_LAST,
+                  G_STRUCT_OFFSET (GtkWidgetClass, touch_event),
+                  _gtk_boolean_handled_accumulator, NULL,
+                  _gtk_marshal_BOOLEAN__BOXED,
+                  G_TYPE_BOOLEAN, 1,
+                  GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
   /**
    * GtkWidget::scroll-event:
    * @widget: the object which received the signal.
@@ -6068,6 +6078,12 @@ gtk_widget_event_internal (GtkWidget *widget,
        case GDK_2BUTTON_PRESS:
        case GDK_3BUTTON_PRESS:
          signal_num = BUTTON_PRESS_EVENT;
+          break;
+        case GDK_TOUCH_BEGIN:
+        case GDK_TOUCH_UPDATE:
+        case GDK_TOUCH_END:
+        case GDK_TOUCH_CANCEL:
+         signal_num = TOUCH_EVENT;
          break;
        case GDK_SCROLL:
          signal_num = SCROLL_EVENT;
index a2d586a1d15c6081d49276e4f422d3b9cd31f61a..4fd7fce08616d0513c141ab3ffe9ce9ccb39e82c 100644 (file)
@@ -423,6 +423,9 @@ struct _GtkWidgetClass
 
   void         (* style_updated)          (GtkWidget *widget);
 
+  gboolean     (* touch_event)            (GtkWidget     *widget,
+                                           GdkEventTouch *event);
+
   /*< private >*/
 
   GtkWidgetClassPrivate *priv;